package com.yuandian.base.controller;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yuandian.bpm.common.core.util.R;
import com.yuandian.base.service.ICommonService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;
import java.util.Map;

/**
 * 说明：通用接口controller
 * @Author zfsn
 * @Date 2023/2/16 15:58
 */
@RestController
@RequestMapping("/common")
@Api(tags = "通用接口")
public class CommonController {

	@Autowired
	private ICommonService commonService;

	/**
	 * 通用一般列表查询
	 * @param code 配置编码
	 * @param req 请求参数
	 * @return 通用返回对象
	 */
	@ApiOperation(value = "通用一般列表查询", notes = "通用一般列表查询")
	@PostMapping("/list/{code}")
	public R<List<Map<String, Object>>> list(@PathVariable("code") String code, @RequestBody Map<String, Object> req) {
		return commonService.list(code, req);
	}

	/**
	 * 通用分页列表查询
	 * @param page 分页参数
	 * @param code 配置编码
	 * @param req 请求参数
	 * @param <T> vo类型
	 * @return 通用返回对象
	 */
	@ApiOperation(value = "通用分页列表查询", notes = "通用分页列表查询")
	@PostMapping("/page/{code}")
	public <T> R<Page<Map<String, Object>>> page(
			Page<T> page, @PathVariable("code") String code, @RequestBody Map<String, Object> req) {
		return commonService.page(page, code, req);
	}

	/**
	 * 通用趋势图查询
	 * @param code 配置编码
	 * @param req 请求参数
	 * @return 通用返回对象
	 */
	@ApiOperation(value = "通用趋势图查询", notes = "通用趋势图查询")
	@PostMapping("/chart/trend/{code}")
	public R<Map<String, Object>> trendChart(@PathVariable("code") String code, @RequestBody Map<String, Object> req) {
		return commonService.trendChart(code, req);
	}

	/**
	 * 通用导出
	 * @param code 配置编码
	 * @param req 请求参数
	 * @param <T> vo类型
	 * @return 通用返回对象
	 */
	@ApiOperation(value = "通用导出", notes = "通用导出")
	@PostMapping("/export/{code}")
	public <T> R<T> export(@PathVariable("code") String code, @RequestBody Map<String, Object> req) {
		return commonService.export(code, req);
	}
}
